import base64
from django.conf import settings
# 返回api数据
def ReturnData(code = 0,  msg = 'success',data=None):
    return {
        "code": code,
        "msg": msg,
        "data": data
    }

# 获取第一个错误信息
def get_first_error(form):
    first_error = next(iter(form.errors.items()))
    field_name, error_list = first_error
    error_msg = f"{error_list[0]}"
    return error_msg


# 获取请求协议 + 域名
def get_request_protocol_and_domain(request):
    protocol = request.META.get('HTTP_X_FORWARDED_PROTO', 'http')
    domain = request.META.get('HTTP_HOST')
    return f"{protocol}://{domain}"


# base64加密文本
def base64_encode(text):
    
    return base64.b64encode(text.encode('utf-8')).decode('utf-8')



# 返回登录链接
def get_login_url(request):
    return get_request_protocol_and_domain(request) + f"/web/pc/login/"


# 判断 request.path 是否不需要user_id就看直接访问
def is_not_valid_path_user_id(request):
    """
    判断 request.path 是否不需要user_id就看直接访问
    True: 需要user_id
    False: 不需要user_id
    """
    # 获取session
    is_valid = True
    # 不需要验证的路径
    not_valid_path_list = [
        '/api/user/create/',
        '/api/system/receive_notification/',
        '/api/user/login/',
    ]
    if request.path.startswith('/web/pc/') or request.path.startswith('/media/'):
        is_valid = False
    for _ in not_valid_path_list:
        if request.path in _:
            is_valid = False
            break
    return is_valid
